/***************************************************************************
 创建者: 华磊
 开始时间: 2019.8.2
 copyright: (C) 华友高科
 修改说明: (每次有修改就添加一条，带有 修改人，修改时间，修改描述)
 example (1) hualei 2020.5.8 类的具体实现代码编写

 ***************************************************************************
 *  @file x.h
 *  功能: 卡尔曼滤波
 *
 *                                                                         *
 ***************************************************************************/
#ifndef KALMANFILTERSIMPLE_H
#define KALMANFILTERSIMPLE_H

typedef struct
{
    double LastP;//上次估算协方差 初始化值为0.02
    double Now_P;//当前估算协方差 初始化值为0
    double out;//卡尔曼滤波器输出 初始化值为0
    double Kg;//卡尔曼增益 初始化值为0
    double Q;//过程噪声协方差 初始化值为0.001
    double R;//观测噪声协方差 初始化值为0.543
}KFP;


class KalmanFilterSimple
{
public:
    KalmanFilterSimple(double followQ,double observeR);

public:

    /**
     *卡尔曼滤波器
     *@param KFP *kfp 卡尔曼结构体参数
     *   float input 需要滤波的参数的测量值（即传感器的采集值）
     *@return 滤波后的参数（最优值）
     */
    double calculate_kalmanFilter(double input);
    int setKalmanFilterPara(double followQ,double observeR);
private:

    int initial_kalmanFilter();
private:
    KFP kfp;
};

#endif // KALMANFILTERSIMPLE_H
